﻿//#include"Slist.h"
//SListNode* BuySListNode(SLTDateType x)
//{
//	SListNode* pa = (SListNode*)malloc(sizeof(SListNode));
//	if (!pa)
//	{
//		perror("malloc");
//		exit(-1);
//	}
//	pa->data = x;
//	pa->next = 0;
//	return pa;
//}
//void SListPrint(SListNode* p)
//{
//	while (p)
//	{
//		if (!p->next)
//			fprintf(stdout, "%d\n", p->data);
//		else
//		{
//			fprintf(stdout, "%d->", p->data);
//		}
//		p = p->next;
//	}
//}
//void SListPushBack(SListNode** p, SLTDateType x)
//{
//	SListNode* pa = BuySListNode(x);
//	if (!*p)
//	{
//		*p = pa;
//	}
//	else
//	{
//		SListNode* pp = *p;
//		while (pp->next)
//		{
//			pp = pp->next;
//		}
//		pp->next = pa;
//	}
//}
//void SListPushFront(SListNode** p, SLTDateType x)
//{
//	SListNode* pa = BuySListNode(x);
//	if (!*p)
//	{
//		*p = pa;
//	}
//	else
//	{
//		pa->next = *p;
//		*p = pa;
//	}
//}
//void SListPopBack(SListNode** p)
//{
//	if (!*p)
//	{
//		fprintf(stdout, "此链表为空，不可删除\n");
//		return;
//	}
//	fprintf(stdout, "尾部删除后链表的元素为: ");
//	SListNode* pa = *p;
//	SListNode* pp = 0;
//	while (pa->next)
//	{
//		if (!pa->next->next)
//			pp = pa;
//		pa = pa->next;
//	}
//	free(pa);
//	pp->next = 0;
//}
//void SListPopFront(SListNode** p)
//{
//	SListNode* pa = *p;
//	if (!pa)
//	{
//		fprintf(stdout, "此链表并无任何元素，不能删除\n");
//		return;
//	}
//	fprintf(stdout, "头部删除后链表的元素为: ");
//	*p = (*p)->next;
//	free(pa);
//}
//SListNode* SListFind(SListNode* p, SLTDateType x)
//{
//	int n = 0;
//	do
//	{
//		if (p->data == x)
//		{
//			n++;
//			break;
//		}
//		p = p->next;
//	} while (p);
//	if (!n)
//	{
//		fprintf(stdout, "此链表中没有此元素\n");
//		return -1;
//	}
//	return p;
//}
//void SListInsertAfter(SListNode* p, SLTDateType x)
//{
//	SListNode* pa = BuySListNode(x);
//	pa->next = p->next;
//	p->next = pa;
//}
//void SListEraseAfter(SListNode* p)
//{
//	SListNode* pa = p->next;
//	if (!pa)
//	{
//		fprintf(stdout, "此链表的结点不能进行删除\n");
//		return;
//	}
//	p->next = pa->next;
//	free(pa);
//}
//void SListDestroy(SListNode* p)
//{
//	SListNode* pa = 0;
//	do
//	{
//		pa = p;
//		p = p->next;
//		free(pa);
//	} while (p);
//}
//int main()
//{
//	SLTDateType x = 0;
//	SListNode* p = 0;
//	int n = 0;
//	fprintf(stdout, "请输入要插入元素的数量: ");
//	fscanf(stdin, "%d", &n);
//	fprintf(stdout, "请输入要插入的元素: ");
//	for (int i = 0; i < n; i++)
//	{
//		fscanf(stdin, "%d", &x);
//		SListNode* pp = BuySListNode(x);
//		pp->next = p;
//		p = pp;
//	}
//	SListPrint(p);
//	fprintf(stdout, "请输入要在末尾插入的数据: ");
//	fscanf(stdin, "%d", &x);
//	SListPushBack(&p, x);//末尾插入
//	SListPrint(p);
//	fprintf(stdout, "请输入要在头部插入的数据: ");
//	fscanf(stdin, "%d", &x);
//	SListPushFront(&p, x);//头部插入
//	SListPrint(p);
//	SListPopBack(&p);//尾部删除
//	SListPrint(p);
//	SListPopFront(&p);//头部删除
//	SListPrint(p);
//	fprintf(stdout, "请输入要查找的元素: ");
//	fscanf(stdin, "%d", &x);
//	SListNode* pa = SListFind(p, x);//查找
//	if (pa != -1)
//		fprintf(stdout, "%d\n", pa->data);
//	fprintf(stdout, "请输入要添加的元素: ");
//	fscanf(stdin, "%d", &x);
//	SListInsertAfter(p, x);//在p位置之后插入x
//	fprintf(stdout, "添加后的链表: ");
//	SListPrint(p);
//	SListEraseAfter(p);//删除链表p之后的值
//	fprintf(stdout, "删除指定结点后的链表: ");
//	SListPrint(p);
//	SListDestroy(p);//销毁链表
//	return 0;
//}